/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package es.revuel.tpvonce.modelo.dao;

import es.revuel.tpvonce.modelo.vo.ArticuloVO;
import es.revuel.tpvonce.modelo.vo.FamiliaVO;
import es.revuel.util.database.UtilidadesBDMySQL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Usuario
 */
public class ArticuloDAO {
    private String sql;
    private UtilidadesBDMySQL utilidadesMySQL;

    
    public ArticuloDAO(){
        sql ="";
        utilidadesMySQL = new UtilidadesBDMySQL();
    }
    
    
    
    
    /**
     * 
     * @param articulo
     * @return 
     */
    public int insertarArticulo(ArticuloVO articulo){
        sql = "INSERT INTO articulo (id_articulo,identificador,descripcion,codigo_barras,pvp,stock,id_familia) "
                + "VALUES ("+articulo.getIdArticulo()+","+articulo.getIdentificador()+","+articulo.getDescripcion()+","+articulo.getCodigoBarras()+","+articulo.getPvp()+","
                + " "+articulo.getStock()+", "+articulo.getFamilia().getIdFamilia()+")";        
        return utilidadesMySQL.realizarInsert(sql);
    }
    
    public ArticuloVO recuperarArticulo (int idArticulo){
        ArticuloVO articulo = null;
        String sql ="select * from articulo where "+ArticuloVO.ID_ARTICULO_INT+"="+idArticulo;
        ResultSet rs = utilidadesMySQL.realizarConsulta(sql);
        try {
            while (rs.next()){
                int id_familia =rs.getInt(ArticuloVO.ID_FAMILIA_INT);
                FamiliaDAO fdao = new FamiliaDAO();
                articulo= new ArticuloVO(rs.getInt(ArticuloVO.ID_ARTICULO_INT), rs.getString(ArticuloVO.IDENTIFICADOR_STR),rs.getString(ArticuloVO.DESCRIPCION_STR), rs.getString(ArticuloVO.CODIGO_BARRAS_STR), rs.getFloat(ArticuloVO.PVP_FLT),rs.getInt(ArticuloVO.STOCK_INT),fdao.recuperarFamiliaId(id_familia));
            }
        } catch (SQLException ex) {
            Logger.getLogger(ArticuloDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return articulo;
    }
    
    /**
     * 
     * @param articulo
     * @return 
     */
    public List<ArticuloVO> buscarArticulos(ArticuloVO articulo){
           List<ArticuloVO> listaArticulos = new ArrayList<ArticuloVO>();
        
        String sql= "select * from articulo";
        if (articulo!=null){
            sql+="where ";
            if(articulo.getIdArticulo()!=null){
                sql+= articulo.ID_ARTICULO_INT +"="+articulo.getIdArticulo();
            }
            if(articulo.getIdentificador()!=null){
                sql+= articulo.IDENTIFICADOR_STR +"="+articulo.getIdentificador();
            }
            if(articulo.getDescripcion()!=null){
                sql+= articulo.DESCRIPCION_STR +"="+articulo.getDescripcion();
            }
            if(articulo.getPvp()!=null){
                sql+= articulo.PVP_FLT +"="+articulo.getPvp();
            }
            if(articulo.getStock()!=null){
                sql+= articulo.STOCK_INT +"="+articulo.getStock();
            }
            if(articulo.getFamilia()!=null){
                sql+= articulo.ID_FAMILIA_INT +"="+articulo.getFamilia().getIdFamilia();
            }
            
            
        }
        ResultSet rs = utilidadesMySQL.realizarConsulta(sql);
        
        try {   

            while (rs.next()){
                ArticuloVO ar= null;
                int id_familia =rs.getInt(ArticuloVO.ID_FAMILIA_INT);
                FamiliaDAO fdao = new FamiliaDAO();
                ar = new ArticuloVO(rs.getInt(ArticuloVO.ID_ARTICULO_INT), rs.getString(ArticuloVO.IDENTIFICADOR_STR),rs.getString(ArticuloVO.DESCRIPCION_STR), rs.getString(ArticuloVO.CODIGO_BARRAS_STR), rs.getFloat(ArticuloVO.PVP_FLT),rs.getInt(ArticuloVO.STOCK_INT),fdao.recuperarFamiliaId(id_familia));
                listaArticulos.add(ar);
            }
            
        } catch (SQLException ex) {
            Logger.getLogger(FamiliaDAO.class.getName()).log(Level.SEVERE, null, ex);
            utilidadesMySQL.cerrarConexion();
        }       
        return listaArticulos;
    }
    
    /**
     * 
     * @return 
     */
    public List<ArticuloVO> listarArticulos(){
        
        return buscarArticulos(null);
    }
}
